return ret;
}
+/*
+ * install_deployment_kernel:
+ *
+ * Write out an entry in /boot/loader/entries for @deployment.
+ */
static gboolean
install_deployment_kernel (GFile *sysroot,
int new_bootversion,
OtDeployment *deployment,
+ guint n_deployments,
GCancellable *cancellable,
GError **error)
val);
ot_config_parser_set (bootconfig, "title", title_key);
- version_key = g_strdup_printf ("%d", ot_deployment_get_bootserial (deployment));
+ version_key = g_strdup_printf ("%d", n_deployments - ot_deployment_get_index (deployment));
ot_config_parser_set (bootconfig, "version", version_key);
linux_relpath = g_file_get_relative_path (bootdir, dest_kernel_path);
for (i = 0; i < new_deployments->len; i++)
{
OtDeployment *deployment = new_deployments->pdata[i];
- if (!install_deployment_kernel (sysroot, new_bootversion, deployment,
+ if (!install_deployment_kernel (sysroot, new_bootversion,
+ deployment, new_deployments->len,
cancellable, error))
{
g_prefix_error (error, "Installing kernel: ");
}
static gint
-compare_deployments_by_boot_loader_version (gconstpointer a_pp,
- gconstpointer b_pp)
+compare_deployments_by_boot_loader_version_reversed (gconstpointer a_pp,
+ gconstpointer b_pp)
{
OtDeployment *a = *((OtDeployment**)a_pp);
OtDeployment *b = *((OtDeployment**)b_pp);
const char *b_version = ot_config_parser_get (b_bootconfig, "version");
if (a_version && b_version)
- return strverscmp (a_version, b_version);
+ {
+ int r = strverscmp (a_version, b_version);
+ /* Reverse */
+ return -r;
+ }
else if (a_version)
- return 1;
- else
return -1;
+ else
+ return 1;
}
gboolean
goto out;
}
- g_ptr_array_sort (ret_deployments, compare_deployments_by_boot_loader_version);
+ g_ptr_array_sort (ret_deployments, compare_deployments_by_boot_loader_version_reversed);
for (i = 0; i < ret_deployments->len; i++)
{
OtDeployment *deployment = ret_deployments->pdata[i];
assert_file_has_content sysroot/ostree/deploy/testos/deploy/${rev}.1/etc/os-release 'NAME=TestOS'
assert_file_has_content sysroot/ostree/boot.0/testos/${bootcsum}/0/etc/os-release 'NAME=TestOS'
+ostree admin --sysroot=sysroot status
+
echo "ok second deploy"
ostree admin --sysroot=sysroot deploy --os=testos testos:testos/buildmaster/x86_64-runtime
echo "ok upgrade bare"
+ostree admin --sysroot=sysroot status
+
os_repository_new_commit
ostree --repo=sysroot/ostree/repo remote add testos file://$(pwd)/testos-repo testos/buildmaster/x86_64-runtime
ostree admin --sysroot=sysroot upgrade --os=testos
echo "ok upgrade"
+ostree admin --sysroot=sysroot status
+
assert_file_has_content sysroot/ostree/deploy/testos/deploy/${newrev}.0/etc/os-release 'NAME=TestOS'
assert_file_has_content sysroot/ostree/deploy/testos/deploy/${origrev}.4/etc/os-release 'NAME=TestOS'
-ostree admin --sysroot=sysroot undeploy 1
+ostree admin --sysroot=sysroot undeploy 2
assert_file_has_content sysroot/ostree/deploy/testos/deploy/${newrev}.0/etc/os-release 'NAME=TestOS'
assert_not_has_dir sysroot/ostree/deploy/testos/deploy/${origrev}.4
assert_file_has_content sysroot/ostree/deploy/testos/deploy/${origrev}.3/etc/os-release 'NAME=TestOS'
-ostree admin --sysroot=sysroot undeploy 3
+ostree admin --sysroot=sysroot undeploy 2
assert_not_has_dir sysroot/ostree/deploy/testos/deploy/${origrev}.3
assert_file_has_content sysroot/ostree/deploy/testos/deploy/${newrev}.0/etc/os-release 'NAME=TestOS'